from PikaObj import *


def __init__(): ...


def __del__(): ...


def lock(): ...
def unlock(): ...


class EVENT:
    ALL: int
    PRESSED: int
    PRESSING: int
    PRESS_LOST: int
    SHORT_CLICKED: int
    LONG_PRESSED: int
    LONG_PRESSED_REPEAT: int
    CLICKED: int
    RELEASED: int
    SCROLL_BEGIN: int
    SCROLL_END: int
    SCROLL: int
    GESTURE: int
    KEY: int
    FOCUSED: int
    DEFOCUSED: int
    LEAVE: int
    HIT_TEST: int
    COVER_CHECK: int
    REFR_EXT_DRAW_SIZE: int
    DRAW_MAIN_BEGIN: int
    DRAW_MAIN: int
    DRAW_MAIN_END: int
    DRAW_POST_BEGIN: int
    DRAW_POST: int
    DRAW_POST_END: int
    DRAW_PART_BEGIN: int
    DRAW_PART_END: int
    VALUE_CHANGED: int
    INSERT: int
    REFRESH: int
    READY: int
    CANCEL: int
    DELETE: int
    CHILD_CHANGED: int
    CHILD_CREATED: int
    CHILD_DELETED: int
    SCREEN_UNLOAD_START: int
    SCREEN_LOAD_START: int
    SCREEN_LOADED: int
    SCREEN_UNLOADED: int
    SIZE_CHANGED: int
    STYLE_CHANGED: int
    LAYOUT_CHANGED: int
    GET_SELF_SIZE: int
    PREPROCESS: int
    def __init__(self): ...


class ALIGN:
    DEFAULT: int
    TOP_LEFT: int
    TOP_MID: int
    TOP_RIGHT: int
    BOTTOM_LEFT: int
    BOTTOM_MID: int
    BOTTOM_RIGHT: int
    LEFT_MID: int
    RIGHT_MID: int
    CENTER: int
    OUT_TOP_LEFT: int
    OUT_TOP_MID: int
    OUT_TOP_RIGHT: int
    OUT_BOTTOM_LEFT: int
    OUT_BOTTOM_MID: int
    OUT_BOTTOM_RIGHT: int
    OUT_LEFT_TOP: int
    OUT_LEFT_MID: int
    OUT_LEFT_BOTTOM: int
    OUT_RIGHT_TOP: int
    OUT_RIGHT_MID: int
    OUT_RIGHT_BOTTOM: int
    def __init__(self): ...


class PALETTE:
    RED: int
    PINK: int
    PURPLE: int
    DEEP_PURPLE: int
    INDIGO: int
    BLUE: int
    LIGHT_BLUE: int
    CYAN: int
    TEAL: int
    GREEN: int
    LIGHT_GREEN: int
    LIME: int
    YELLOW: int
    AMBER: int
    ORANGE: int
    DEEP_ORANGE: int
    BROWN: int
    BLUE_GREY: int
    GREY: int
    NONE: int
    def __init__(self): ...


class OPA:
    TRANSP: int
    COVER: int
    def __init__(self): ...


class ANIM:
    OFF: int
    ON: int
    def __init__(self): ...


"""
enum {
    LV_DIR_NONE     = 0x00,
    LV_DIR_LEFT     = (1 << 0),
    LV_DIR_RIGHT    = (1 << 1),
    LV_DIR_TOP      = (1 << 2),
    LV_DIR_BOTTOM   = (1 << 3),
    LV_DIR_HOR      = LV_DIR_LEFT | LV_DIR_RIGHT,
    LV_DIR_VER      = LV_DIR_TOP | LV_DIR_BOTTOM,
    LV_DIR_ALL      = LV_DIR_HOR | LV_DIR_VER,
};

typedef uint8_t lv_dir_t;
"""


class DIR:
    NONE: int
    LEFT: int
    RIGHT: int
    TOP: int
    BOTTOM: int
    HOR: int
    VER: int
    ALL: int
    def __init__(self): ...


class STATE:
    DEFAULT: int
    CHECKED: int
    FOCUSED: int
    FOCUS_KEY: int
    EDITED: int
    HOVERED: int
    PRESSED: int
    SCROLLED: int
    DISABLED: int
    USER_1: int
    USER_2: int
    USER_3: int
    USER_4: int
    ANY: int
    def __init__(self): ...


class TEXT_DECOR:
    NONE: int
    UNDERLINE: int
    STRIKETHROUGH: int
    def __init__(self): ...


class lv_event:
    def get_code(self) -> int: ...
    def get_target(self) -> lv_obj: ...


class lv_color_t:
    ...


def lv_color_hex(hex: int64) -> lv_color_t: ...


class lv_timer_t:
    def set_period(period: int): ...
    def set_cb(cb: any): ...
    def _del(self): ...


def palette_lighten(p: int, lvl: int) -> lv_color_t: ...
def palette_darken(p: int, lvl: int) -> lv_color_t: ...
def palette_main(p: int) -> lv_color_t: ...


class style_t:
    def __init__(self): ...
    def init(self): ...
    def set_width(self, value: int): ...
    def set_min_width(self, value: int): ...
    def set_max_width(self, value: int): ...
    def set_height(self, value: int): ...
    def set_min_height(self, value: int): ...
    def set_max_height(self, value: int): ...
    def set_x(self, value: int): ...
    def set_y(self, value: int): ...
    def set_align(self, value: int): ...
    def set_transform_width(self, value: int): ...
    def set_transform_height(self, value: int): ...
    def set_translate_x(self, value: int): ...
    def set_translate_y(self, value: int): ...
    def set_transform_zoom(self, value: int): ...
    def set_transform_angle(self, value: int): ...
    def set_transform_pivot_x(self, value: int): ...
    def set_transform_pivot_y(self, value: int): ...
    def set_pad_top(self, value: int): ...
    def set_pad_bottom(self, value: int): ...
    def set_pad_left(self, value: int): ...
    def set_pad_right(self, value: int): ...
    def set_pad_row(self, value: int): ...
    def set_pad_column(self, value: int): ...
    def set_bg_color(self, value: lv_color_t): ...
    def set_bg_opa(self, value: int): ...
    def set_bg_grad_color(self, value: lv_color_t): ...
    def set_bg_grad_dir(self, value: int): ...
    def set_bg_main_stop(self, value: int): ...
    def set_bg_grad_stop(self, value: int): ...
    # def set_bg_grad(self, value: lv_grad_dsc_t):...
    def set_bg_dither_mode(self, value: int): ...
    def set_bg_img_src(self, value: bytes): ...
    def set_bg_img_opa(self, value: int): ...
    def set_bg_img_recolor(self, value: lv_color_t): ...
    def set_bg_img_recolor_opa(self, value: int): ...
    def set_bg_img_tiled(self, value: int): ...
    def set_border_color(self, value: lv_color_t): ...
    def set_border_opa(self, value: int): ...
    def set_border_width(self, value: int): ...
    def set_border_side(self, value: int): ...
    def set_border_post(self, value: int): ...
    def set_outline_width(self, value: int): ...
    def set_outline_color(self, value: lv_color_t): ...
    def set_outline_opa(self, value: int): ...
    def set_outline_pad(self, value: int): ...
    def set_shadow_width(self, value: int): ...
    def set_shadow_ofs_x(self, value: int): ...
    def set_shadow_ofs_y(self, value: int): ...
    def set_shadow_spread(self, value: int): ...
    def set_shadow_color(self, value: lv_color_t): ...
    def set_shadow_opa(self, value: int): ...
    def set_img_opa(self, value: int): ...
    def set_img_recolor(self, value: lv_color_t): ...
    def set_img_recolor_opa(self, value: int): ...
    def set_line_width(self, value: int): ...
    def set_line_dash_width(self, value: int): ...
    def set_line_dash_gap(self, value: int): ...
    def set_line_rounded(self, value: int): ...
    def set_line_color(self, value: lv_color_t): ...
    def set_line_opa(self, value: int): ...
    def set_arc_width(self, value: int): ...
    def set_arc_rounded(self, value: int): ...
    def set_arc_color(self, value: lv_color_t): ...
    def set_arc_opa(self, value: int): ...
    def set_arc_img_src(self, value: bytes): ...
    def set_text_color(self, value: lv_color_t): ...
    def set_text_opa(self, value: int): ...
    # def set_text_font(self, value: lv_font_t): ...
    def set_text_letter_space(self, value: int): ...
    def set_text_line_space(self, value: int): ...
    def set_text_decor(self, value: int): ...
    def set_text_align(self, value: int): ...
    def set_radius(self, value: int): ...
    def set_clip_corner(self, value: int): ...
    def set_opa(self, value: int): ...
    # def set_color_filter_dsc(self, value: lv_color_filter_dsc_t): ...
    def set_color_filter_opa(self, value: int): ...
    # def set_anim(self, value: lv_anim_t): ...
    def set_anim_time(self, value: int): ...
    def set_anim_speed(self, value: int): ...
    # def set_transition(self, value: lv_style_transition_dsc_t): ...
    def set_blend_mode(self, value: int): ...
    def set_layout(self, value: int): ...
    def set_base_dir(self, value: int): ...
    def reset(self): ...
    def register_prop(self, flag: int) -> int: ...
    def get_num_custom_props(self) -> int: ...
    def remove_prop(self, prop: int) -> int: ...
    # def set_prop(self, prop: int, value: lv_style_value_t): ...
    # def set_prop_meta(self, prop: int, meta: int): ...
    # def get_prop(self, prop: int, value: lv_style_value_t) -> int: ...
    # def transition_dsc_init(self, tr: lv_style_transition_dsc_t, props: int, path_cb: int, time: int, delay: int, user_data: int): ...
    # def prop_get_default(self, prop: int) -> lv_style_value_t: ...
    def is_empty(self) -> int: ...
    def set_size(self, value: int): ...
    def set_pad_all(self, value: int): ...
    def set_pad_hor(self, value: int): ...
    def set_pad_ver(self, value: int): ...
    def set_pad_gap(self, value: int): ...
    def prop_has_flag(self, prop: int, flag: int) -> int: ...
    def set_flex_flow(self, value: int): ...
    def set_flex_main_place(self, value: int): ...
    def set_flex_cross_place(self, value: int): ...
    def set_flex_track_place(self, value: int): ...
    def set_flex_grow(self, value: int): ...


class LAYOUT_FLEX:
    value: int
    def __init__(self): ...


class SIZE:
    CONTENT: int
    def __init__(self): ...


class flag_t:
    HIDDEN: int
    CLICKABLE: int
    CLICK_FOCUSABLE: int
    CHECKABLE: int
    SCROLLABLE: int
    SCROLL_ELASTIC: int
    SCROLL_MOMENTUM: int
    SCROLL_ONE: int
    SCROLL_CHAIN_HOR: int
    SCROLL_CHAIN_VER: int
    SCROLL_CHAIN: int
    SCROLL_ON_FOCUS: int
    SCROLL_WITH_ARROW: int
    SNAPPABLE: int
    PRESS_LOCK: int
    EVENT_BUBBLE: int
    GESTURE_BUBBLE: int
    ADV_HITTEST: int
    IGNORE_LAYOUT: int
    FLOATING: int
    OVERFLOW_VISIBLE: int
    LAYOUT_1: int
    LAYOUT_2: int
    WIDGET_1: int
    WIDGET_2: int
    USER_1: int
    USER_2: int
    USER_3: int
    USER_4: int
    def __init__(self): ...


class FLEX_FLOW:
    ROW: int
    COLUMN: int
    ROW_WRAP: int
    ROW_REVERSE: int
    ROW_WRAP_REVERSE: int
    COLUMN_WRAP: int
    COLUMN_REVERSE: int
    COLUMN_WRAP_REVERSE: int
    def __init__(self): ...


"""
void lv_obj_scroll_to_view(struct _lv_obj_t * obj, lv_anim_enable_t anim_en);
void lv_obj_scroll_to_view_recursive(struct _lv_obj_t * obj, lv_anim_enable_t anim_en);
void lv_obj_set_style_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_min_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_max_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_height(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_min_height(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_max_height(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_x(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_y(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_align(struct _lv_obj_t * obj, lv_align_t value, lv_style_selector_t selector);
void lv_obj_set_style_transform_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_transform_height(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_translate_x(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_translate_y(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_transform_zoom(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_transform_angle(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_transform_pivot_x(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_transform_pivot_y(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_pad_top(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_pad_bottom(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_pad_left(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_pad_right(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_pad_row(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_pad_column(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_grad_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_grad_dir(struct _lv_obj_t * obj, lv_grad_dir_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_main_stop(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_grad_stop(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_grad(struct _lv_obj_t * obj, const lv_grad_dsc_t * value, lv_style_selector_t selector);
void lv_obj_set_style_bg_dither_mode(struct _lv_obj_t * obj, lv_dither_mode_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_img_src(struct _lv_obj_t * obj, const void * value, lv_style_selector_t selector);
void lv_obj_set_style_bg_img_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_img_recolor(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_img_recolor_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_bg_img_tiled(struct _lv_obj_t * obj, bool value, lv_style_selector_t selector);
void lv_obj_set_style_border_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_border_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_border_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_border_side(struct _lv_obj_t * obj, lv_border_side_t value, lv_style_selector_t selector);
void lv_obj_set_style_border_post(struct _lv_obj_t * obj, bool value, lv_style_selector_t selector);
void lv_obj_set_style_outline_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_outline_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_outline_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_outline_pad(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_shadow_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_shadow_ofs_x(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_shadow_ofs_y(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_shadow_spread(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_shadow_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_shadow_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_img_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_img_recolor(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_img_recolor_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_line_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_line_dash_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_line_dash_gap(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_line_rounded(struct _lv_obj_t * obj, bool value, lv_style_selector_t selector);
void lv_obj_set_style_line_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_line_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_arc_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_arc_rounded(struct _lv_obj_t * obj, bool value, lv_style_selector_t selector);
void lv_obj_set_style_arc_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_arc_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_arc_img_src(struct _lv_obj_t * obj, const void * value, lv_style_selector_t selector);
void lv_obj_set_style_text_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
void lv_obj_set_style_text_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_text_font(struct _lv_obj_t * obj, const lv_font_t * value, lv_style_selector_t selector);
void lv_obj_set_style_text_letter_space(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_text_line_space(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_text_decor(struct _lv_obj_t * obj, lv_text_decor_t value, lv_style_selector_t selector);
void lv_obj_set_style_text_align(struct _lv_obj_t * obj, lv_text_align_t value, lv_style_selector_t selector);
void lv_obj_set_style_radius(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
void lv_obj_set_style_clip_corner(struct _lv_obj_t * obj, bool value, lv_style_selector_t selector);
void lv_obj_set_style_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_color_filter_dsc(struct _lv_obj_t * obj, const lv_color_filter_dsc_t * value,
                                       lv_style_selector_t selector);
void lv_obj_set_style_color_filter_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
void lv_obj_set_style_anim(struct _lv_obj_t * obj, const lv_anim_t * value, lv_style_selector_t selector);
void lv_obj_set_style_anim_time(struct _lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);
void lv_obj_set_style_anim_speed(struct _lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);
void lv_obj_set_style_transition(struct _lv_obj_t * obj, const lv_style_transition_dsc_t * value,
                                 lv_style_selector_t selector);
void lv_obj_set_style_blend_mode(struct _lv_obj_t * obj, lv_blend_mode_t value, lv_style_selector_t selector);
void lv_obj_set_style_layout(struct _lv_obj_t * obj, uint16_t value, lv_style_selector_t selector);
void lv_obj_set_style_base_dir(struct _lv_obj_t * obj, lv_base_dir_t value, lv_style_selector_t selector);
"""


class lv_obj:
    def __init__(self, parent: lv_obj): ...
    def add_state(self, state: int): ...
    def add_flag(self, flag: int): ...
    def clear_flag(self, flag: int): ...
    def add_event_cb(self, event_cb: any, filter: int, user_data: pointer): ...
    def add_style(self, style: style_t, selector: int): ...
    def set_pos(self, x: int, y: int): ...
    def set_x(self, x: int): ...
    def set_y(self, y: int): ...
    def set_size(self, w: int, h: int): ...
    def refr_size(self) -> int: ...
    def set_width(self, w: int): ...
    def set_height(self, h: int): ...
    def set_content_width(self, w: int): ...
    def set_content_height(self, h: int): ...
    def set_layout(self, layout: int): ...
    def is_layout_positioned(self) -> int: ...
    def mark_layout_as_dirty(self): ...
    def update_layout(self): ...
    def set_align(self, align: int): ...
    def align(self, align: int, x_ofs: int, y_ofs: int): ...
    def align_to(self, base: lv_obj, align: int, x_ofs: int, y_ofs: int): ...
    def center(self): ...
    # def get_coords(self, coords: lv_area_t): ...
    def get_x(self) -> int: ...
    def get_x2(self) -> int: ...
    def get_y(self) -> int: ...
    def get_y2(self) -> int: ...
    def get_x_aligned(self) -> int: ...
    def get_y_aligned(self) -> int: ...
    def get_width(self) -> int: ...
    def get_height(self) -> int: ...
    def get_content_width(self) -> int: ...
    def get_content_height(self) -> int: ...
    # def get_content_coords(self, area: lv_area_t): ...
    def get_self_width(self) -> int: ...
    def get_self_height(self) -> int: ...
    def refresh_self_size(self) -> int: ...
    def refr_pos(self): ...
    def move_to(self, x: int, y: int): ...
    def move_children_by(self, x_diff: int, y_diff: int,
                         ignore_floating: int): ...

    def transform_point(self, p: point_t, recursive: int, inv: int): ...
    # def get_transformed_area(self, area: lv_area_t, recursive: int, inv: int): ...
    # def invalidate_area(self, area: lv_area_t): ...
    def invalidate(self): ...
    # def area_is_visible(self, area: lv_area_t) -> int: ...
    def is_visible(self) -> int: ...
    def set_ext_click_area(self, size: int): ...
    def set_style_size(self, value: int, selector: int): ...
    # def get_click_area(self, area: lv_area_t): ...
    def hit_test(self, point: point_t) -> int: ...
    def set_flex_flow(self, flow: int): ...
    def set_flex_grow(self, value: int): ...
    def set_flex_align(self, main_place: int,
                       cross_place: int, align: int): ...

    def set_id(self, id: str): ...
    def get_id(self) -> str: ...
    def clean(self): ...
    def del_(self): ...
    def scroll_to_view(self, anim_en: int): ...
    def scroll_to_view_recursive(self, anim_en: int): ...
    def set_style_width(self, value: int, selector: int): ...
    def set_style_min_width(self, value: int, selector: int): ...
    def set_style_max_width(self, value: int, selector: int): ...
    def set_style_height(self, value: int, selector: int): ...
    def set_style_min_height(self, value: int, selector: int): ...
    def set_style_max_height(self, value: int, selector: int): ...
    def set_style_x(self, value: int, selector: int): ...
    def set_style_y(self, value: int, selector: int): ...
    def set_style_align(self, value: int, selector: int): ...
    def set_style_transform_width(self, value: int, selector: int): ...
    def set_style_transform_height(self, value: int, selector: int): ...
    def set_style_translate_x(self, value: int, selector: int): ...
    def set_style_translate_y(self, value: int, selector: int): ...
    def set_style_transform_zoom(self, value: int, selector: int): ...
    def set_style_transform_angle(self, value: int, selector: int): ...
    def set_style_transform_pivot_x(self, value: int, selector: int): ...
    def set_style_transform_pivot_y(self, value: int, selector: int): ...
    def set_style_pad_top(self, value: int, selector: int): ...
    def set_style_pad_bottom(self, value: int, selector: int): ...
    def set_style_pad_left(self, value: int, selector: int): ...
    def set_style_pad_right(self, value: int, selector: int): ...
    def set_style_pad_row(self, value: int, selector: int): ...
    def set_style_pad_column(self, value: int, selector: int): ...
    def set_style_bg_color(self, value: lv_color_t, selector: int): ...
    def set_style_bg_opa(self, value: int, selector: int): ...
    def set_style_bg_grad_color(self, value: lv_color_t, selector: int): ...
    def set_style_bg_grad_dir(self, value: int, selector: int): ...
    def set_style_bg_main_stop(self, value: int, selector: int): ...
    def set_style_bg_grad_stop(self, value: int, selector: int): ...
    # def set_style_bg_grad(self, value: lv_grad_dsc_t, selector: int): ...
    def set_style_bg_dither_mode(self, value: int, selector: int): ...
    # def set_style_bg_img_src(self, value: bytes, selector: int): ...
    def set_style_bg_img_opa(self, value: int, selector: int): ...
    def set_style_bg_img_recolor(self, value: lv_color_t, selector: int): ...
    def set_style_bg_img_recolor_opa(self, value: int, selector: int): ...
    def set_style_bg_img_tiled(self, value: int, selector: int): ...
    def set_style_border_color(self, value: lv_color_t, selector: int): ...
    def set_style_border_opa(self, value: int, selector: int): ...
    def set_style_border_width(self, value: int, selector: int): ...
    def set_style_border_side(self, value: int, selector: int): ...
    def set_style_border_post(self, value: int, selector: int): ...
    def set_style_outline_width(self, value: int, selector: int): ...
    def set_style_outline_color(self, value: lv_color_t, selector: int): ...
    def set_style_outline_opa(self, value: int, selector: int): ...
    def set_style_outline_pad(self, value: int, selector: int): ...
    def set_style_shadow_width(self, value: int, selector: int): ...
    def set_style_shadow_ofs_x(self, value: int, selector: int): ...
    def set_style_shadow_ofs_y(self, value: int, selector: int): ...
    def set_style_shadow_spread(self, value: int, selector: int): ...
    def set_style_shadow_color(self, value: lv_color_t, selector: int): ...
    def set_style_shadow_opa(self, value: int, selector: int): ...
    def set_style_img_opa(self, value: int, selector: int): ...
    def set_style_img_recolor(self, value: lv_color_t, selector: int): ...
    def set_style_img_recolor_opa(self, value: int, selector: int): ...
    def set_style_line_width(self, value: int, selector: int): ...
    def set_style_line_dash_width(self, value: int, selector: int): ...
    def set_style_line_dash_gap(self, value: int, selector: int): ...
    def set_style_line_rounded(self, value: int, selector: int): ...
    def set_style_line_color(self, value: lv_color_t, selector: int): ...
    def set_style_line_opa(self, value: int, selector: int): ...
    def set_style_arc_width(self, value: int, selector: int): ...
    def set_style_arc_rounded(self, value: int, selector: int): ...
    def set_style_arc_color(self, value: lv_color_t, selector: int): ...
    def set_style_arc_opa(self, value: int, selector: int): ...
    # def set_style_arc_img_src(self, value: bytes, selector: int): ...
    def set_style_text_color(self, value: lv_color_t, selector: int): ...
    def set_style_text_opa(self, value: int, selector: int): ...
    # def set_style_text_font(self, value: lv_font_t, selector: int): ...
    def set_style_text_letter_space(self, value: int, selector: int): ...
    def set_style_text_line_space(self, value: int, selector: int): ...
    def set_style_text_decor(self, value: int, selector: int): ...
    def set_style_text_align(self, value: int, selector: int): ...
    def set_style_radius(self, value: int, selector: int): ...
    def set_style_clip_corner(self, value: int, selector: int): ...
    def set_style_opa(self, value: int, selector: int): ...
    # def set_style_color_filter_dsc(self, value: lv_color_filter_dsc_t, selector: int): ...
    def set_style_color_filter_opa(self, value: int, selector: int): ...
    # def set_style_anim(self, value: int, selector: int): ...
    def set_style_anim_time(self, value: int, selector: int): ...
    def set_style_anim_speed(self, value: int, selector: int): ...
    # def set_style_transition(self, value: lv_style_transition_dsc_t, selector: int): ...
    def set_style_blend_mode(self, value: int, selector: int): ...
    def set_style_layout(self, value: int, selector: int): ...
    def set_style_base_dir(self, value: int, selector: int): ...
    """
    void lv_obj_set_scrollbar_mode(struct _lv_obj_t * obj, lv_scrollbar_mode_t mode);
    void lv_obj_set_scroll_dir(struct _lv_obj_t * obj, lv_dir_t dir);
    void lv_obj_set_scroll_snap_x(struct _lv_obj_t * obj, lv_scroll_snap_t align);
    void lv_obj_set_scroll_snap_y(struct _lv_obj_t * obj, lv_scroll_snap_t align);
    lv_scrollbar_mode_t lv_obj_get_scrollbar_mode(const struct _lv_obj_t * obj);
    lv_dir_t lv_obj_get_scroll_dir(const struct _lv_obj_t * obj);
    lv_scroll_snap_t lv_obj_get_scroll_snap_x(const struct _lv_obj_t * obj);
    lv_scroll_snap_t lv_obj_get_scroll_snap_y(const struct _lv_obj_t * obj);
    lv_coord_t lv_obj_get_scroll_x(const struct _lv_obj_t * obj);
    lv_coord_t lv_obj_get_scroll_y(const struct _lv_obj_t * obj);
    lv_coord_t lv_obj_get_scroll_top(struct _lv_obj_t * obj);
    lv_coord_t lv_obj_get_scroll_bottom(struct _lv_obj_t * obj);
    lv_coord_t lv_obj_get_scroll_left(struct _lv_obj_t * obj);
    lv_coord_t lv_obj_get_scroll_right(struct _lv_obj_t * obj);
    void lv_obj_get_scroll_end(struct _lv_obj_t  * obj, lv_point_t * end);
    """

    def set_scrollbar_mode(self, mode: int): ...
    def set_scroll_dir(self, dir: int): ...
    def set_scroll_snap_x(self, align: int): ...
    def set_scroll_snap_y(self, align: int): ...
    def get_scrollbar_mode(self) -> int: ...
    def get_scroll_dir(self) -> int: ...
    def get_scroll_snap_x(self) -> int: ...
    def get_scroll_snap_y(self) -> int: ...
    def get_scroll_x(self) -> int: ...
    def get_scroll_y(self) -> int: ...
    def get_scroll_top(self) -> int: ...
    def get_scroll_bottom(self) -> int: ...
    def get_scroll_left(self) -> int: ...
    def get_scroll_right(self) -> int: ...
    # def get_scroll_end(self) -> point_t: ...
    # def set_scroll_propagation(self, en: int): ...
    # def get_scroll_propagation(self) -> int: ...
    def remove_style_all(self): ...
    def move_foreground(self): ...
    def move_background(self): ...


"""
void lv_indev_read_timer_cb(lv_timer_t * timer);
void lv_indev_enable(lv_indev_t * indev, bool en);
lv_indev_t * lv_indev_get_act(void);
lv_indev_type_t lv_indev_get_type(const lv_indev_t * indev);
void lv_indev_reset(lv_indev_t * indev, lv_obj_t * obj);
void lv_indev_reset_long_press(lv_indev_t * indev);
void lv_indev_set_cursor(lv_indev_t * indev, lv_obj_t * cur_obj);
void lv_indev_set_group(lv_indev_t * indev, lv_group_t * group);
void lv_indev_set_button_points(lv_indev_t * indev, const lv_point_t points[]);
void lv_indev_get_point(const lv_indev_t * indev, lv_point_t * point);
lv_dir_t lv_indev_get_gesture_dir(const lv_indev_t * indev);
uint32_t lv_indev_get_key(const lv_indev_t * indev);
lv_dir_t lv_indev_get_scroll_dir(const lv_indev_t * indev);
lv_obj_t * lv_indev_get_scroll_obj(const lv_indev_t * indev);
void lv_indev_get_vect(const lv_indev_t * indev, lv_point_t * point);
void lv_indev_wait_release(lv_indev_t * indev);
lv_obj_t * lv_indev_get_obj_act(void);
lv_timer_t * lv_indev_get_read_timer(lv_disp_t * indev);
lv_obj_t * lv_indev_search_obj(lv_obj_t * obj, lv_point_t * point);
"""


class indev_t:
    def __init__(self): ...
    def enable(self, en: int): ...
    def get_type(self) -> int: ...
    def reset(self, obj: lv_obj): ...
    def reset_long_press(self): ...
    def set_cursor(self, cur_obj: lv_obj): ...
    # def set_group(self, group: lv_group): ...
    def set_button_points(self, points: point_t): ...
    def get_point(self) -> point_t: ...
    def get_gesture_dir(self) -> int: ...
    def get_key(self) -> int: ...
    def get_scroll_dir(self) -> int: ...
    def get_scroll_obj(self) -> lv_obj: ...
    def get_vect(self, point: point_t): ...
    def wait_release(self): ...
    # def get_obj_act(self) -> lv_obj: ...
    # def get_read_timer(self) -> lv_timer: ...
    # def search_obj(self, obj: lv_obj, point: point_t) -> lv_obj: ...


class FLEX_ALIGN:
    START: int
    END: int
    CENTER: int
    SPACE_EVENLY: int
    SPACE_AROUND: int
    SPACE_BETWEEN: int
    def __init__(self): ...


class PART:
    MAIN: int
    SCROLLBAR: int
    INDICATOR: int
    KNOB: int
    SELECTED: int
    ITEMS: int
    TICKS: int
    CURSOR: int
    CUSTOM_FIRST: int
    ANY: int
    def __init__(self): ...


class obj(lv_obj):
    FLAG: flag_t
    def __init__(self, *parent): ...


def indev_get_act() -> indev_t: ...


class point_t:
    x: int
    y: int
    def __init__(self): ...


class arc(lv_obj):
    MODE_NORMAL: int
    MODE_SYMMETRICAL: int
    MODE_REVERSE: int
    def __init__(self, parent: lv_obj): ...
    def set_start_angle(self, start: int): ...
    def set_end_angle(self, angle: int): ...
    def set_angles(self, start: int, end: int): ...
    def set_bg_start_angle(self, start: int): ...
    def set_bg_end_angle(self, angle: int): ...
    def set_bg_angles(self, start: int, end: int): ...
    def set_rotation(self, rotation: int): ...
    def set_mode(self, mode: int): ...
    def set_value(self, value: int): ...
    def set_range(self, min: int, max: int): ...
    def set_change_rate(self, rate: int): ...
    def get_angle_start(self) -> int: ...
    def get_angle_end(self) -> int: ...
    def get_bg_angle_start(self) -> int: ...
    def get_bg_angle_end(self) -> int: ...
    def get_value(self) -> int: ...
    def get_min_value(self) -> int: ...
    def get_max_value(self) -> int: ...
    def get_mode(self) -> int: ...
    # def get_rotation(self) -> int: ...


class bar(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def set_value(self, value: int, anim: int): ...
    def set_start_value(self, start_value: int, anim: int): ...
    def set_range(self, min: int, max: int): ...
    def set_mode(self, mode: int): ...
    def get_value(self) -> int: ...
    def get_start_value(self) -> int: ...
    def get_min_value(self) -> int: ...
    def get_max_value(self) -> int: ...
    def get_mode(self) -> int: ...


class btn(lv_obj):
    def __init__(self, parent: lv_obj): ...


class checkbox(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def set_text(self, txt: str): ...
    def set_text_static(self, txt: str): ...
    def get_text(self) -> str: ...


class dropdown(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def set_text(self, txt: str): ...
    def set_options(self, options: str): ...
    def add_option(self, option: str, pos: int): ...
    def clear_options(self): ...
    def set_selected(self, sel_opt: int): ...
    def set_dir(self, dir: int): ...
    def set_symbol(self, symbol: str): ...
    def set_selected_hightlight(self, en: int): ...
    # def get_list(self) -> lv_obj: ...
    def get_text(self) -> str: ...
    def get_options(self) -> str: ...
    def get_selected(self) -> int: ...
    def get_option_cnt(self) -> int: ...
    def get_selected_str(self) -> str: ...
    def get_option_index(self, option: str) -> int: ...
    def get_symbol(self) -> str: ...
    def get_selected_highlight(self) -> int: ...
    def get_dir(self) -> int: ...
    def open(self): ...
    def close(self): ...
    def is_open(self) -> int: ...

"""
lv_obj_t * lv_label_create(lv_obj_t * parent);
void lv_label_set_text(lv_obj_t * obj, const char * text);
void lv_label_set_text_fmt(lv_obj_t * obj, const char * fmt, ...) LV_FORMAT_ATTRIBUTE(2, 3);
void lv_label_set_text_static(lv_obj_t * obj, const char * text);
void lv_label_set_long_mode(lv_obj_t * obj, lv_label_long_mode_t long_mode);
void lv_label_set_recolor(lv_obj_t * obj, bool en);
void lv_label_set_text_sel_start(lv_obj_t * obj, uint32_t index);
void lv_label_set_text_sel_end(lv_obj_t * obj, uint32_t index);
char * lv_label_get_text(const lv_obj_t * obj);
lv_label_long_mode_t lv_label_get_long_mode(const lv_obj_t * obj);
bool lv_label_get_recolor(const lv_obj_t * obj);
void lv_label_get_letter_pos(const lv_obj_t * obj, uint32_t char_id, lv_point_t * pos);
uint32_t lv_label_get_letter_on(const lv_obj_t * obj, lv_point_t * pos_in);
bool lv_label_is_char_under_pos(const lv_obj_t * obj, lv_point_t * pos);
uint32_t lv_label_get_text_selection_start(const lv_obj_t * obj);
uint32_t lv_label_get_text_selection_end(const lv_obj_t * obj);
void lv_label_ins_text(lv_obj_t * obj, uint32_t pos, const char * txt);
void lv_label_cut_text(lv_obj_t * obj, uint32_t pos, uint32_t cnt);
"""

class label(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def set_text(self, txt: str): ...
    # def set_text_fmt(self, fmt: str, *args): ...
    def set_text_static(self, txt: str): ...
    def set_long_mode(self, long_mode: int): ...
    def set_recolor(self, en: int): ...
    def set_text_sel_start(self, index: int): ...
    def set_text_sel_end(self, index: int): ...
    def get_text(self) -> str: ...
    def get_long_mode(self) -> int: ...
    def get_recolor(self) -> int: ...
    def get_letter_pos(self, char_id: int) -> point_t: ...
    def get_letter_on(self, pos_in: point_t) -> int: ...
    def is_char_under_pos(self, pos: point_t) -> int: ...
    def get_text_selection_start(self) -> int: ...
    def get_text_selection_end(self) -> int: ...
    def ins_text(self, pos: int, txt: str): ...
    def cut_text(self, pos: int, cnt: int): ...



class roller(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def set_options(self, options: str, mode: int): ...
    def set_visible_row_count(self, row_cnt: int): ...


class slider(lv_obj):
    def __init__(self, parent: lv_obj): ...


class switch(lv_obj):
    def __init__(self, parent: lv_obj): ...


class table(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def set_cell_value(self, row: int, col: int, txt: str): ...


class img_dsc_t:
    def __init__(self, dsc_dict: dict): ...


class cf_t:
    TRUE_COLOR_RAW: int
    TRUE_COLOR_RAW_ALPHA: int
    TRUE_COLOR_RAW_CHROMA_KEYED: int
    TRUE_COLOR: int
    TRUE_COLOR_ALPHA: int
    TRUE_COLOR_CHROMA_KEYED: int
    TRUE_COLOR_INDEXED_1BIT: int
    TRUE_COLOR_INDEXED_2BIT: int
    TRUE_COLOR_INDEXED_4BIT: int
    TRUE_COLOR_INDEXED_8BIT: int
    TRUE_COLOR_ALPHA_1BIT: int
    TRUE_COLOR_ALPHA_2BIT: int
    TRUE_COLOR_ALPHA_4BIT: int
    TRUE_COLOR_ALPHA_8BIT: int
    TRUE_COLOR_RGB888: int
    TRUE_COLOR_RGBA8888: int
    TRUE_COLOR_RGBX8888: int
    TRUE_COLOR_RGB565: int
    TRUE_COLOR_RGBA5658: int
    TRUE_COLOR_RGB565A8: int
    def __init__(self): ...


class img(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def set_src(self, src: img_dsc_t): ...
    def set_offset_x(self, x: int): ...
    def set_offset_y(self, y: int): ...
    def set_angle(self, angle: int): ...
    def set_pivot(self, x: int, y: int): ...
    def set_zoom(self, zoom: int): ...
    def set_antialias(self, antialias: int): ...
    def set_size_mode(self, mode: int): ...
    def get_src(self) -> img_dsc_t: ...
    def get_offset_x(self) -> int: ...
    def get_offset_y(self) -> int: ...
    def get_angle(self) -> int: ...
    # def get_pivot(self) -> lv_point: ...
    def get_zoom(self) -> int: ...
    def get_antialias(self) -> int: ...
    def get_size_mode(self) -> int: ...


"""
lv_obj_t * lv_textarea_create(lv_obj_t * parent);
void lv_textarea_add_char(lv_obj_t * obj, uint32_t c);
void lv_textarea_add_text(lv_obj_t * obj, const char * txt);
void lv_textarea_del_char(lv_obj_t * obj);
void lv_textarea_del_char_forward(lv_obj_t * obj);
void lv_textarea_set_text(lv_obj_t * obj, const char * txt);
void lv_textarea_set_placeholder_text(lv_obj_t * obj, const char * txt);
void lv_textarea_set_cursor_pos(lv_obj_t * obj, int32_t pos);
void lv_textarea_set_cursor_click_pos(lv_obj_t * obj, bool en);
void lv_textarea_set_password_mode(lv_obj_t * obj, bool en);
void lv_textarea_set_one_line(lv_obj_t * obj, bool en);
void lv_textarea_set_accepted_chars(lv_obj_t * obj, const char * list);
void lv_textarea_set_max_length(lv_obj_t * obj, uint32_t num);
void lv_textarea_set_insert_replace(lv_obj_t * obj, const char * txt);
void lv_textarea_set_text_selection(lv_obj_t * obj, bool en);
void lv_textarea_set_password_show_time(lv_obj_t * obj, uint16_t time);
void lv_textarea_set_align(lv_obj_t * obj, lv_text_align_t align);
const char * lv_textarea_get_text(const lv_obj_t * obj);
const char * lv_textarea_get_placeholder_text(const lv_obj_t * obj);
lv_obj_t * lv_textarea_get_label(const lv_obj_t * obj);
uint32_t lv_textarea_get_cursor_pos(const lv_obj_t * obj);
bool lv_textarea_get_cursor_click_pos(lv_obj_t * obj);
bool lv_textarea_get_password_mode(const lv_obj_t * obj);
bool lv_textarea_get_one_line(const lv_obj_t * obj);
const char * lv_textarea_get_accepted_chars(const lv_obj_t * obj);
uint32_t lv_textarea_get_max_length(const lv_obj_t * obj);
bool lv_textarea_text_is_selected(const lv_obj_t * obj);
bool lv_textarea_get_text_selection(const lv_obj_t * obj);
uint16_t lv_textarea_get_password_show_time(const lv_obj_t * obj);
void lv_textarea_clear_selection(const lv_obj_t * obj);
void lv_textarea_cursor_right(const lv_obj_t * obj);
void lv_textarea_cursor_left(const lv_obj_t * obj);
void lv_textarea_cursor_down(const lv_obj_t * obj);
void lv_textarea_cursor_up(const lv_obj_t * obj);
"""


class textarea(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def add_char(self, c: int): ...
    def add_text(self, txt: str): ...
    def del_char(self): ...
    def del_char_forward(self): ...
    def set_text(self, txt: str): ...
    def set_placeholder_text(self, txt: str): ...
    def set_cursor_pos(self, pos: int): ...
    def set_cursor_click_pos(self, en: int): ...
    def set_password_mode(self, en: int): ...
    def set_one_line(self, en: int): ...
    def set_accepted_chars(self, list: str): ...
    def set_max_length(self, num: int): ...
    def set_insert_replace(self, txt: str): ...
    def set_text_selection(self, en: int): ...
    def set_password_show_time(self, time: int): ...
    def set_align(self, align: int): ...
    def get_text(self) -> str: ...
    def get_placeholder_text(self) -> str: ...
    def get_label(self) -> lv_obj: ...
    def get_cursor_pos(self) -> int: ...
    def get_cursor_click_pos(self) -> int: ...
    def get_password_mode(self) -> int: ...
    def get_one_line(self) -> int: ...
    def get_accepted_chars(self) -> str: ...
    def get_max_length(self) -> int: ...
    def text_is_selected(self) -> int: ...
    def get_text_selection(self) -> int: ...
    def get_password_show_time(self) -> int: ...
    def clear_selection(self): ...
    def cursor_right(self): ...
    def cursor_left(self): ...
    def cursor_down(self): ...
    def cursor_up(self): ...


class canvas(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def set_buffer(self, buf: any, w: int, h: int, cf: int): ...
    def set_px(self, x: int, y: int, color: lv_color_t, opa: int): ...
    def set_palette(self, id: int, c: lv_color_t): ...
    def get_px(self, x: int, y: int, color: lv_color_t, opa: int): ...
    def get_img(self) -> img_dsc_t: ...

    def copy_buf(self, to_copy: bytes,
                 x: int, y: int, w: int, h: int): ...
    def transform(self, img: img_dsc_t, angle: int, zoom: int, offset_x: int,
                  offset_y: int, pivot_x: int, pivot_y: int, antialias: bool): ...

    # def blur_hor(self, area: lv_area_t, r: int):...
    # def blur_ver(self, area: lv_area_t, r: int):...
    def fill_bg(self, color: lv_color_t, opa: int): ...
    # def draw_rect(self, x: int, y: int, w: int, h: int, draw_dsc: lv_draw_rect_dsc_t):...
    # def draw_text(self, x: int, y: int, max_w: int, draw_dsc: lv_draw_label_dsc_t, txt: str):...
    # def draw_img(self, x: int, y: int, src: const_void_p, draw_dsc: lv_draw_img_dsc_t):...
    # def draw_line(self, points: lv_point_t, point_cnt: uint, draw_dsc: lv_draw_line_dsc_t):...
    # def draw_polygon(self, points: lv_point_t, point_cnt: uint, draw_dsc: lv_draw_rect_dsc_t):...
    # def draw_arc(self, x: int, y: int, r: int, start_angle: int, end_angle: int, draw_dsc: lv_draw_arc_dsc_t):...


class chart_series_t:
    ...


"""
enum {
    LV_CHART_TYPE_NONE,     /**< Don't draw the series*/
    LV_CHART_TYPE_LINE,     /**< Connect the points with lines*/
    LV_CHART_TYPE_BAR,      /**< Draw columns*/
    LV_CHART_TYPE_SCATTER,  /**< Draw points and lines in 2D (x,y coordinates)*/
};
typedef uint8_t lv_chart_type_t;
"""


class CHART_TYPE:
    NONE: int
    LINE: int
    BAR: int
    SCATTER: int
    def __init__(self): ...


"""
enum {
    LV_CHART_AXIS_PRIMARY_Y     = 0x00,
    LV_CHART_AXIS_SECONDARY_Y   = 0x01,
    LV_CHART_AXIS_PRIMARY_X     = 0x02,
    LV_CHART_AXIS_SECONDARY_X   = 0x04,
    _LV_CHART_AXIS_LAST
};
typedef uint8_t lv_chart_axis_t;
"""


class CHART_AXIS:
    PRIMARY_Y: int
    SECONDARY_Y: int
    PRIMARY_X: int
    SECONDARY_X: int
    def __init__(self): ...


"""
enum {
    LV_CHART_UPDATE_MODE_SHIFT,     /**< Shift old data to the left and add the new one the right*/
    LV_CHART_UPDATE_MODE_CIRCULAR,  /**< Add the new data in a circular way*/
};
typedef uint8_t lv_chart_update_mode_t;
"""


class CHART_UPDATE_MODE:
    SHIFT: int
    CIRCULAR: int
    def __init__(self): ...

"""
typedef enum {
    LV_CHART_DRAW_PART_DIV_LINE_INIT,    /**< Used before/after drawn the div lines*/
    LV_CHART_DRAW_PART_DIV_LINE_HOR,     /**< Used for each horizontal division lines*/
    LV_CHART_DRAW_PART_DIV_LINE_VER,     /**< Used for each vertical division lines*/
    LV_CHART_DRAW_PART_LINE_AND_POINT,   /**< Used on line and scatter charts for lines and points*/
    LV_CHART_DRAW_PART_BAR,              /**< Used on bar charts for the rectangles*/
    LV_CHART_DRAW_PART_CURSOR,           /**< Used on cursor lines and points*/
    LV_CHART_DRAW_PART_TICK_LABEL,       /**< Used on tick lines and labels*/
} lv_chart_draw_part_type_t;
"""


class CHART_DRAW_PART:
    DIV_LINE_INIT: int
    DIV_LINE_HOR: int
    DIV_LINE_VER: int
    LINE_AND_POINT: int
    BAR: int
    CURSOR: int
    TICK_LABEL: int
    def __init__(self): ...


"""
lv_obj_t * lv_chart_create(lv_obj_t * parent);
void lv_chart_set_type(lv_obj_t * obj, lv_chart_type_t type);
void lv_chart_set_point_count(lv_obj_t * obj, uint16_t cnt);
void lv_chart_set_range(lv_obj_t * obj, lv_chart_axis_t axis, lv_coord_t min, lv_coord_t max);
void lv_chart_set_update_mode(lv_obj_t * obj, lv_chart_update_mode_t update_mode);
void lv_chart_set_div_line_count(lv_obj_t * obj, uint8_t hdiv, uint8_t vdiv);
void lv_chart_set_zoom_x(lv_obj_t * obj, uint16_t zoom_x);
void lv_chart_set_zoom_y(lv_obj_t * obj, uint16_t zoom_y);
uint16_t lv_chart_get_zoom_x(const lv_obj_t * obj);
uint16_t lv_chart_get_zoom_y(const lv_obj_t * obj);
void lv_chart_set_axis_tick(lv_obj_t * obj, lv_chart_axis_t axis, lv_coord_t major_len, lv_coord_t minor_len,
                            lv_coord_t major_cnt, lv_coord_t minor_cnt, bool label_en, lv_coord_t draw_size);
lv_chart_type_t lv_chart_get_type(const lv_obj_t * obj);
uint16_t lv_chart_get_point_count(const lv_obj_t * obj);
uint16_t lv_chart_get_x_start_point(const lv_obj_t * obj, lv_chart_series_t * ser);
void lv_chart_get_point_pos_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint16_t id, lv_point_t * p_out);
void lv_chart_refresh(lv_obj_t * obj);
lv_chart_series_t * lv_chart_add_series(lv_obj_t * obj, lv_color_t color, lv_chart_axis_t axis);
void lv_chart_remove_series(lv_obj_t * obj, lv_chart_series_t * series);
void lv_chart_hide_series(lv_obj_t * chart, lv_chart_series_t * series, bool hide);
void lv_chart_set_series_color(lv_obj_t * chart, lv_chart_series_t * series, lv_color_t color);
void lv_chart_set_x_start_point(lv_obj_t * obj, lv_chart_series_t * ser, uint16_t id);
lv_chart_series_t * lv_chart_get_series_next(const lv_obj_t * chart, const lv_chart_series_t * ser);
lv_chart_cursor_t * lv_chart_add_cursor(lv_obj_t * obj, lv_color_t color, lv_dir_t dir);
void lv_chart_set_cursor_pos(lv_obj_t * chart, lv_chart_cursor_t * cursor, lv_point_t * pos);
void lv_chart_set_cursor_point(lv_obj_t * chart, lv_chart_cursor_t * cursor, lv_chart_series_t * ser,
                               uint16_t point_id);
lv_point_t lv_chart_get_cursor_point(lv_obj_t * chart, lv_chart_cursor_t * cursor);
void lv_chart_set_all_value(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t value);
void lv_chart_set_next_value(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t value);
void lv_chart_set_next_value2(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t x_value, lv_coord_t y_value);
void lv_chart_set_value_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint16_t id, lv_coord_t value);
void lv_chart_set_value_by_id2(lv_obj_t * obj, lv_chart_series_t * ser, uint16_t id, lv_coord_t x_value,
                               lv_coord_t y_value);
void lv_chart_set_ext_y_array(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t array[]);
void lv_chart_set_ext_x_array(lv_obj_t * obj, lv_chart_series_t * ser, lv_coord_t array[]);
lv_coord_t * lv_chart_get_y_array(const lv_obj_t * obj, lv_chart_series_t * ser);
lv_coord_t * lv_chart_get_x_array(const lv_obj_t * obj, lv_chart_series_t * ser);
uint32_t lv_chart_get_pressed_point(const lv_obj_t * obj);
"""


class chart_cursor_t:
    ...


class coord_t:
    ...


class chart(lv_obj):
    TYPE: CHART_TYPE
    AXIS: CHART_AXIS
    UPDATE_MODE: CHART_UPDATE_MODE
    DRAW_PART: CHART_DRAW_PART
    def __init__(self, parent: lv_obj): ...
    def set_point_count(self, cnt: int): ...
    def set_range(self, axis: int, min: int, max: int): ...
    def set_zoom_x(self, zoom_x: int): ...
    def set_zoom_y(self, zoom_y: int): ...
    def add_series(self, color: lv_color_t, axis: int) -> chart_series_t: ...
    def remove_series(self, series: chart_series_t): ...
    def hide_series(self, series: chart_series_t, hide: int): ...
    def set_series_color(self, series: chart_series_t, color: lv_color_t): ...
    def refresh(self): ...
    def set_type(self, type: int): ...
    def set_update_mode(self, update_mode: int): ...
    def set_div_line_count(self, hdiv: int, vdiv: int): ...
    def set_axis_tick(self, axis: int, major_len: int, minor_len: int,
                      major_cnt: int, minor_cnt: int, label_en: int, draw_size: int): ...

    def get_type(self) -> int: ...
    def get_point_count(self) -> int: ...
    def get_x_start_point(self, ser: chart_series_t) -> int: ...
    def get_point_pos_by_id(self, ser: chart_series_t, id: int) -> point_t: ...
    def get_zoom_x(self) -> int: ...
    def get_zoom_y(self) -> int: ...
    def get_series_next(self, ser: chart_series_t) -> chart_series_t: ...
    def set_x_start_point(self, ser: chart_series_t, id: int): ...
    def add_cursor(self, color: lv_color_t, dir: int) -> chart_cursor_t: ...
    def set_cursor_pos(self, cursor: chart_cursor_t, pos: point_t): ...
    def set_cursor_point(
        self, cursor: chart_cursor_t, ser: chart_series_t, point_id: int): ...

    def get_cursor_point(self, cursor: chart_cursor_t) -> point_t: ...
    def set_all_value(self, ser: chart_series_t, value: int): ...
    def set_next_value(self, ser: chart_series_t, value: int): ...
    def set_next_value2(self, ser: chart_series_t,
                        x_value: int, y_value: int): ...

    def set_value_by_id(self, ser: chart_series_t, id: int, value: int): ...
    def set_value_by_id2(self, ser: chart_series_t, id: int,
                         x_value: int, y_value: int): ...

    def set_ext_x_array(self, ser: chart_series_t, array: any): ...
    def set_ext_y_array(self, ser: chart_series_t, array: any): ...
    def get_y_array(self, ser: chart_series_t) -> any: ...
    def get_x_array(self, ser: chart_series_t) -> any: ...
    def get_pressed_point(self) -> int: ...


"""
typedef struct {
    lv_obj_t obj;
    char ** map;
    uint16_t tab_cnt;
    uint16_t tab_cur;
    lv_dir_t tab_pos;
} lv_tabview_t;

extern const lv_obj_class_t lv_tabview_class;

/**********************
 * GLOBAL PROTOTYPES
 **********************/
lv_obj_t * lv_tabview_create(lv_obj_t * parent, lv_dir_t tab_pos, lv_coord_t tab_size);
lv_obj_t * lv_tabview_add_tab(lv_obj_t * tv, const char * name);
lv_obj_t * lv_tabview_get_content(lv_obj_t * tv);
lv_obj_t * lv_tabview_get_tab_btns(lv_obj_t * tv);
void lv_tabview_set_act(lv_obj_t * obj, uint32_t id, lv_anim_enable_t anim_en);
uint16_t lv_tabview_get_tab_act(lv_obj_t * tv);
"""


class tabview(lv_obj):
    def __init__(self, parent: lv_obj, tab_pos: int, tab_size: int): ...
    def add_tab(self, name: str) -> lv_obj: ...
    def get_content(self) -> lv_obj: ...
    def get_tab_btns(self) -> lv_obj: ...
    def set_act(self, id: int, anim_en: int): ...
    def get_tab_act(self) -> int: ...

"""
enum {
    LV_SCROLLBAR_MODE_OFF,      /**< Never show scrollbars*/
    LV_SCROLLBAR_MODE_ON,       /**< Always show scrollbars*/
    LV_SCROLLBAR_MODE_ACTIVE,   /**< Show scroll bars when object is being scrolled*/
    LV_SCROLLBAR_MODE_AUTO,     /**< Show scroll bars when the content is large enough to be scrolled*/
};
typedef uint8_t lv_scrollbar_mode_t;
"""


class SCROLLBAR_MODE:
    OFF: int
    ON: int
    ACTIVE: int
    AUTO: int
    def __init__(self): ...


class meter_indicator_t:
    def __init__(self): ...


class meter_scale_t:
    def __init__(self): ...


class meter(lv_obj):
    """
    lv_obj_t * lv_meter_create(lv_obj_t * parent);
    meter_scale_t * lv_meter_add_scale(lv_obj_t * obj);
    void lv_meter_set_scale_ticks(lv_obj_t * obj, meter_scale_t * scale, uint16_t cnt, uint16_t width, uint16_t len,
                                lv_color_t color);
    void lv_meter_set_scale_major_ticks(lv_obj_t * obj, meter_scale_t * scale, uint16_t nth, uint16_t width,
                                        uint16_t len, lv_color_t color, int16_t label_gap);
    void lv_meter_set_scale_range(lv_obj_t * obj, meter_scale_t * scale, int32_t min, int32_t max, uint32_t angle_range,
                                uint32_t rotation);
    meter_indicator_t * lv_meter_add_needle_line(lv_obj_t * obj, meter_scale_t * scale, uint16_t width,
                                                    lv_color_t color, int16_t r_mod);

    meter_indicator_t * lv_meter_add_needle_img(lv_obj_t * obj, meter_scale_t * scale, const void * src,
                                                lv_coord_t pivot_x, lv_coord_t pivot_y);
    meter_indicator_t * lv_meter_add_arc(lv_obj_t * obj, meter_scale_t * scale, uint16_t width, lv_color_t color,
                                            int16_t r_mod);
    meter_indicator_t * lv_meter_add_scale_lines(lv_obj_t * obj, meter_scale_t * scale, lv_color_t color_start,
                                                    lv_color_t color_end, bool local, int16_t width_mod);
    void lv_meter_set_indicator_value(lv_obj_t * obj, meter_indicator_t * indic, int32_t value);
    void lv_meter_set_indicator_start_value(lv_obj_t * obj, meter_indicator_t * indic, int32_t value);
    void lv_meter_set_indicator_end_value(lv_obj_t * obj, meter_indicator_t * indic, int32_t value);
    """

    def __init__(self, parent: lv_obj): ...
    def add_scale(self) -> meter_scale_t: ...

    def set_scale_ticks(self, scale: meter_scale_t, cnt: int, width: int,
                        len: int, color: lv_color_t): ...

    def set_scale_major_ticks(self, scale: meter_scale_t, nth: int, width: int,
                              len: int, color: lv_color_t, label_gap: int): ...

    def set_scale_range(self, scale: meter_scale_t, min: int, max: int,
                        angle_range: int, rotation: int): ...

    def add_needle_line(self, scale: meter_scale_t, width: int,
                        color: lv_color_t, r_mod: int) -> meter_indicator_t: ...

    # def add_needle_img(self, scale: meter_scale_t, src: any, pivot_x: int, pivot_y: int) -> meter_indicator_t: ...

    def add_arc(self, scale: meter_scale_t, width: int, color: lv_color_t,
                r_mod: int) -> meter_indicator_t: ...
    def add_scale_lines(self, scale: meter_scale_t, color_start: lv_color_t,
                        color_end: lv_color_t, local: int, width_mod: int) -> meter_indicator_t: ...

    def set_indicator_value(self, indic: meter_indicator_t, value: int): ...

    def set_indicator_start_value(
        self, indic: meter_indicator_t, value: int): ...
    def set_indicator_end_value(
        self, indic: meter_indicator_t, value: int): ...

"""
enum {
    LV_KEYBOARD_MODE_TEXT_LOWER,
    LV_KEYBOARD_MODE_TEXT_UPPER,
    LV_KEYBOARD_MODE_SPECIAL,
    LV_KEYBOARD_MODE_NUMBER,
    LV_KEYBOARD_MODE_USER_1,
    LV_KEYBOARD_MODE_USER_2,
    LV_KEYBOARD_MODE_USER_3,
    LV_KEYBOARD_MODE_USER_4,
};
typedef uint8_t lv_keyboard_mode_t;

typedef struct {
    lv_btnmatrix_t btnm;
    lv_obj_t * ta;
    lv_keyboard_mode_t mode;
    uint8_t popovers : 1;
} lv_keyboard_t;

extern const lv_obj_class_t lv_keyboard_class;

lv_obj_t * lv_keyboard_create(lv_obj_t * parent);

void lv_keyboard_set_textarea(lv_obj_t * kb, lv_obj_t * ta);
void lv_keyboard_set_mode(lv_obj_t * kb, lv_keyboard_mode_t mode);
void lv_keyboard_set_popovers(lv_obj_t * kb, bool en);
void lv_keyboard_set_map(lv_obj_t * kb, lv_keyboard_mode_t mode, const char * map[],
                         const lv_btnmatrix_ctrl_t ctrl_map[]);

lv_obj_t * lv_keyboard_get_textarea(const lv_obj_t * kb);
lv_keyboard_mode_t lv_keyboard_get_mode(const lv_obj_t * kb);
bool lv_btnmatrix_get_popovers(const lv_obj_t * obj);
static inline const char ** lv_keyboard_get_map_array(const lv_obj_t * kb);
static inline uint16_t lv_keyboard_get_selected_btn(const lv_obj_t * obj);
static inline const char * lv_keyboard_get_btn_text(const lv_obj_t * obj, uint16_t btn_id);

void lv_keyboard_def_event_cb(lv_event_t * e);
"""


class KEYBOARD_MODE:
    TEXT_LOWER: int
    TEXT_UPPER: int
    SPECIAL: int
    NUMBER: int
    USER_1: int
    USER_2: int
    USER_3: int
    USER_4: int
    def __init__(self): ...


class keyboard(lv_obj):
    MODE: KEYBOARD_MODE
    def __init__(self, parent: lv_obj): ...
    def set_textarea(self, ta: lv_obj): ...
    def set_mode(self, mode: int): ...
    def set_popovers(self, en: int): ...
    # def set_map(self, mode: int, map: any, ctrl_map: any): ...
    def get_textarea(self) -> lv_obj: ...
    def get_mode(self) -> int: ...
    # def get_popovers(self) -> int: ...
    # def get_map_array(self) -> any: ...
    def get_selected_btn(self) -> int: ...
    # def get_btn_text(self, btn_id: int) -> str: ...

"""
lv_obj_t * lv_ime_pinyin_create(lv_obj_t * parent);
void lv_ime_pinyin_set_keyboard(lv_obj_t * obj, lv_obj_t * kb);
void lv_ime_pinyin_set_mode(lv_obj_t * obj, lv_ime_pinyin_mode_t mode);
lv_obj_t * lv_ime_pinyin_get_kb(lv_obj_t * obj);
lv_obj_t * lv_ime_pinyin_get_cand_panel(lv_obj_t * obj);
"""

class ime_pinyin(lv_obj):
    def __init__(self, parent: lv_obj): ...
    def set_keyboard(self, kb: lv_obj): ...
    def set_mode(self, mode: int): ...
    def get_kb(self) -> lv_obj: ...
    def get_cand_panel(self) -> lv_obj: ...


def scr_act() -> lv_obj: ...
def pct(x: int) -> int: ...
def timer_create_basic() -> lv_timer_t: ...


def color_black() -> lv_color_t: ...
def color_white() -> lv_color_t: ...


def task_handler(): ...
def deinit(): ...
